转载请注明出处哈:http://carlosfu.iteye.com/blog/2240426
一、问题:
1. 应用端使用了我们提供的一个redis-sentinel集群(1主,1从,3个sentinel)
2. 客户端设置了超时时间为200ms, 下面是应用端提供的超时日志。注意上图对象数只有265个。
2016-02-03 14:20:42,981 [DubboServerHandler-10.16.xx.xx:20880-thread-51] WARN com.xx.DramaTabRelatePgcComponentImpl$1 (DataComponentCommand.java:76) - commandKey=drama_tab_pgc groupKey=drama_tab_pgc_pool poolKey=drama_tab_pgc_pool timeout cost=201 ms ................... 2016-02-03 14:20:40,168 [DubboServerHandler-10.16.xx.xx:20880-thread-9] WARN com.xx.DramaTabRelatePgcComponentImpl$1 (DataComponentCommand.java:76) - commandKey=drama_tab_pgc groupKey=drama_tab_pgc_pool poolKey=drama_tab_pgc_pool timeout cost=200 ms 2016-02-03 09:56:14,174 [DubboServerHandler-10.16.xx.xx:20880-thread-146] WARN com.xx.DramaTabRelatePgcComponentImpl$1 (DataComponentCommand.java:76) - commandKey=drama_tab_pgc groupKey=drama_tab_pgc_pool poolKey=drama_tab_pgc_pool timeout cost=200 ms ..................... 2016-02-03 12:32:03,575 [DubboServerHandler-10.16.xx.xx:20880-thread-125] WARN com.xx.DramaTabRelatePgcComponentImpl$1 (DataComponentCommand.java:76) - commandKey=drama_tab_pgc groupKey=drama_tab_pgc_pool poolKey=drama_tab_pgc_pool timeout cost=200 ms
二、逐个排查:
1. Redis慢查询:并没有发现慢查询,跳过
2. Redis日志:对象数只有265个,注意从2016年1月25后就没日志了,所以并没有什么异常,也没什么RDB和AOF重写。跳过
3. 机器:tsar观察cpu,内存,网络,负载,本地IO
cpu、内存、负载、本地IO比较正常。
唯一以前怀疑的是网络,按理说这个流量也不是很大,但是看了一下机房的拓扑关系以及redis-cli的测试就了解原因了,下一节进行简单分析。
三、怀疑并确认:
1. 应用端与服务器网络:
2. redis-cli
redis-cli是个比较好的方法来测redis的延迟,为此我们用下面的api来测试,发现会出现200ms的情况。
具体原因猜测:机房之间的带宽有限,据说只有50M,这台机器本身流量就有点大而且是台虚机。
redis-cli --latency-history -h ip -p port
[@zw-34-55 ~]# redis-cli --latency-history -h 10.11.132.xx -p 6388 min: 0, max: 1, avg: 0.48 (1290 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.87 (1264 samples) -- 15.00 seconds range min: 0, max: 1, avg: 0.60 (1275 samples) -- 15.01 seconds range min: 0, max: 202, avg: 0.69 (1265 samples) -- 15.00 seconds range min: 0, max: 202, avg: 0.81 (1271 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.79 (1254 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.52 (1283 samples) -- 15.00 seconds range min: 0, max: 1, avg: 0.50 (1288 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.89 (1260 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.57 (1277 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.52 (1284 samples) -- 15.00 seconds range min: 0, max: 1, avg: 0.69 (1284 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.76 (1256 samples) -- 15.00 seconds range min: 0, max: 1, avg: 0.48 (1300 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.55 (1297 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.89 (1257 samples) -- 15.01 seconds range min: 0, max: 202, avg: 0.68 (1277 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.52 (1296 samples) -- 15.01 seconds range min: 0, max: 1, avg: 0.74 (1278 samples) -- 15.00 seconds range min: 0, max: 1, avg: 0.73 (1271 samples) -- 15.00 seconds rang
四、解决和观察:
1. 思路:写入端是后台管理系统,流量较小,读端流量较大,为此让master改为电信机房。
2. 解决方法:(1) 添加一个电信的slave (2) 下线老的联通slave (3) 主从做sentinel failover
3. 总结:查询超时的基本思路 + 分配机器要考虑流量的合理性。
五、参考文献:
相关推荐
这个Demo演示了使用redis乐观锁机制解决高并发环境下出现连接超时与超卖(库存出现负数)情况的解决办法。
Redis性能问题排查解决手册.rar
案例中通过访问addOrder方法实现向mysql数据库添加一条数据并在redis中设置该条数据的有效期为10秒,10秒过后触发redis监听,在监听中修改订单的状态。 资源说明:源码+使用文档+数据库创表语句。
主要给大家介绍了关于Redis连接超时异常的处理方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
主要给大家分享了一次关于Redis内存诡异增长的排查过程实战记录,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
redis-copy, 将一个redis数据库复制到另一个数据库 RedisCopy这个工具提供了一种将一个redis数据库的内容移动到另一个redis数据库的方法。 代码是由包含在redis源代码中的 redis-copy.rb 脚本插件激发的,但目标是...
redisredis redis redis redis
Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows ...
redis集群搭建(一主一从一哨兵)
Redis实战 Redis实战 Redis实战 Redis实战 Redis实战 Redis实战 Redis实战
三级联动,第一次从数据库拿,第二次从redis中拿
Redis 思维导图 Redis Redis Redis
Redis是一种开源的内存数据结构存储系统,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。Redis可以用作数据库、缓存和消息中间件。Redis在性能、可扩展性和灵活性方面表现出色,因此被广泛应用于Web...
redis新手使用
redis缓存 redis缓存
Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装...
redis6.2.6 redis.conf配置文件
redis redisDesktop ---------安装redis及使用redisDesktop查看数据
redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-...
一、修改Redis的持久化数据库文件dump.rdb保存路径,绝对路径的方式:查找到行 dir D:\Redis7.0.4\bin\RedisData 如果Redis7.0.4.zip压缩包直接解压在D盘根目录下,不需要修改,如果放在其它盘,如E盘,请修改绝对...